Protocol Buffers
データをserializeするフォーマット
入力データをserializeして圧縮
圧縮されたデータをデシリアライズして戻す
スキーマ言語
Google製
元々社内で利用されていたが2008年にOSS化された
マイクロサービスの流れ的に、こっちではこの言語、こっちではこの言語としたものを連携しやすい
その通信間でシリアライズ、デシリアライズを行う
github
tutorial
特徴
静的な構造化データが対象
元のデータ構造を変更せずに拡張可能
バイナリ形式
言語に依存しない
データアクセスコードを自動生成
JSONにもシリアライズできる
利用する流れ
1. protoファイルを記述
拡張子は.proto
2. protocでコンパイルしコードの自動生成を行う
C, Java, Pythonなどのコードを出力
3. 自動生成されたコードを用いてプログラミング
フィールドルール
required
optional
repeated
フィールドの型
double
float
int32
uint64
sint32
fixed64
sfixed32
bool
string
bytres
etc.
同様の技術
XML
Javaのオブジェクトシリアライズ
JSON
利用例
プログラミング言語内のデータ構造をファイルに保存するとき
RPCで使われている ref
RPCでデータをやり取りするとき
PokemonGoで使われている
https://gist.github.com/anonymous/077d6dea82d58b8febde54ae9729b1bf
参考
XMLはもう不要!? Google製シリアライズツール「Protocol Buffer」 (1) 構造化データをバイト列に変換するための新技術 | マイナビニュース
今さらProtocol Buffersと、手に馴染む道具の話 - Qiita
https://www.slideshare.net/yuichi110/protocol-buffers-61413028
https://ja.wikipedia.org/wiki/Protocol_Buffers
https://myenigma.hatenablog.com/entry/2019/06/09/125326?utm_source=feed
https://speakerdeck.com/sonatard/protocol-buffersfalsesukimawoli-yong-sitakai-fa/
https://speakerdeck.com/south37/protocol-buffers-for-web-api-number-builderscon?slide=2
https://buf.build/blog/protobuf-language-specification
Bufがgoogleの代わりに仕様を公開